Object-Oriented Programming (Classes, Structs, Inheritance, Protocols)

Mobile App Development - আইওএস ডেভেলপমেন্ট (iOS) - Swift প্রোগ্রামিং ভাষার মৌলিক ধারণা
245

Object-Oriented Programming (OOP) Swift-এ একটি গুরুত্বপূর্ণ ধারণা যা অ্যাপ ডেভেলপমেন্টের সময় খুবই কার্যকর। Swift-এ OOP ধারণাগুলি Classes, Structs, Inheritance, এবং Protocols এর মাধ্যমে বাস্তবায়ন করা হয়। প্রতিটি বিষয় আমি নিচে বিস্তারিতভাবে ব্যাখ্যা করছি:

১. Classes (ক্লাস)

  • ক্লাস হল একটি ব্লুপ্রিন্ট যা কোনো অবজেক্টের প্রপার্টি (data) এবং মেথড (functionality) সংজ্ঞায়িত করে।
  • Swift-এ ক্লাস তৈরি করতে class কীওয়ার্ড ব্যবহার করা হয়।

উদাহরণ:

class Person {
    // Properties
    var name: String
    var age: Int
    
    // Initializer
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    
    // Method
    func introduce() {
        print("Hi, my name is \(name) and I am \(age) years old.")
    }
}

// ক্লাস থেকে একটি অবজেক্ট তৈরি করা
let person1 = Person(name: "John", age: 30)
person1.introduce()  // Output: Hi, my name is John and I am 30 years old.
  • ক্লাসে ইনিশিয়ালাইজার মেথড ব্যবহার করে প্রপার্টি সেট করা হয়।
  • ক্লাসের মেমোরি ম্যানেজমেন্ট রেফারেন্স টাইপ হিসেবে কাজ করে।

২. Structs (স্ট্রাক্ট)

  • স্ট্রাক্ট এবং ক্লাস অনেকটাই একই ধরনের, কিন্তু স্ট্রাক্ট ভ্যালু টাইপ হিসেবে কাজ করে।
  • স্ট্রাক্ট তৈরি করতে struct কীওয়ার্ড ব্যবহার করা হয়।

উদাহরণ:

struct Car {
    // Properties
    var brand: String
    var year: Int
    
    // Method
    func details() {
        print("This is a \(brand) car from \(year).")
    }
}

// স্ট্রাক্ট থেকে একটি অবজেক্ট তৈরি করা
var car1 = Car(brand: "Toyota", year: 2020)
car1.details()  // Output: This is a Toyota car from 2020.
  • স্ট্রাক্টে ইনিশিয়ালাইজার ডিফল্টভাবে থাকে, তাই আলাদাভাবে ডিফাইন করার প্রয়োজন হয় না।
  • স্ট্রাক্টে ভ্যালু টাইপ হিসেবে কাজ করে, অর্থাৎ স্ট্রাক্টের একটি কপি তৈরি হয় যখন এটি পাস বা অ্যাসাইন করা হয়।

৩. Inheritance (ইনহেরিটেন্স)

  • Swift-এ ইনহেরিটেন্স কেবলমাত্র ক্লাসে সাপোর্টেড, স্ট্রাক্টে নয়।
  • ইনহেরিটেন্সে একটি ক্লাস আরেকটি ক্লাসের প্রপার্টি এবং মেথড ইনারহিট করতে পারে, যা কোড রিইউস করার জন্য খুবই উপকারী।
  • Swift-এ ইনহেরিটেন্স করতে : ParentClassName ব্যবহার করা হয়।

উদাহরণ:

class Animal {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    func sound() {
        print("\(name) makes a sound.")
    }
}

class Dog: Animal {
    func bark() {
        print("\(name) barks!")
    }
}

// Dog ক্লাস থেকে একটি অবজেক্ট তৈরি করা
let myDog = Dog(name: "Buddy")
myDog.sound()  // Output: Buddy makes a sound.
myDog.bark()   // Output: Buddy barks!
  • Dog ক্লাসটি Animal ক্লাস থেকে ইনারহিট করেছে এবং এর প্রপার্টি ও মেথড অ্যাক্সেস করছে।

৪. Protocols (প্রোটোকলস)

  • প্রোটোকলস হল এমন কিছু যা একটি ব্লুপ্রিন্ট হিসেবে কাজ করে এবং কোনো ক্লাস, স্ট্রাক্ট, বা এনাম এই প্রোটোকলগুলো ইমপ্লিমেন্ট করতে পারে।
  • প্রোটোকল ডিক্লেয়ার করতে protocol কীওয়ার্ড ব্যবহার করা হয়।

উদাহরণ:

protocol Drivable {
    var speed: Int { get set }
    func start()
    func stop()
}

class Bicycle: Drivable {
    var speed: Int = 0
    
    func start() {
        print("Bicycle is starting.")
        speed = 10
    }
    
    func stop() {
        print("Bicycle is stopping.")
        speed = 0
    }
}

// Bicycle থেকে একটি অবজেক্ট তৈরি করা
let myBike = Bicycle()
myBike.start()  // Output: Bicycle is starting.
myBike.stop()   // Output: Bicycle is stopping.
  • Drivable একটি প্রোটোকল যা Bicycle ক্লাস ইমপ্লিমেন্ট করেছে। এতে আমরা নিশ্চিত হতে পারি যে Bicycle ক্লাসটি প্রোটোকলের সব মেথড এবং প্রপার্টি ইমপ্লিমেন্ট করবে।

Classes vs. Structs

  • ক্লাস রেফারেন্স টাইপ হিসেবে কাজ করে, অর্থাৎ মেমোরিতে একটি রেফারেন্স ধরে রাখে। যখন ক্লাসের একটি অবজেক্ট কপি করা হয়, তখন একই রেফারেন্স ধরে রাখা হয়।
  • স্ট্রাক্ট ভ্যালু টাইপ হিসেবে কাজ করে। যখন এটি কপি করা হয়, তখন নতুন একটি কপি তৈরি হয়।
ফিচারক্লাসস্ট্রাক্ট
টাইপরেফারেন্স টাইপভ্যালু টাইপ
ইনহেরিটেন্সসাপোর্ট করেসাপোর্ট করে না
ডিনিশিয়ালাইজারডিফাইন করা যায়ডিফল্টভাবে থাকে
মেমোরি ম্যানেজমেন্টARC (Automatic Reference Counting)ডিরেক্ট ভ্যালু মেমোরি

উপসংহার

  • Classes এবং Structs iOS অ্যাপ ডেভেলপমেন্টে গুরুত্বপূর্ণ ভূমিকা পালন করে।
  • Inheritance কোড রিইউস এবং কাঠামোগততা বৃদ্ধি করে, আর Protocols অনেকটাই ইন্টারফেসের মতো কাজ করে, যা নিশ্চিত করে নির্দিষ্ট মেথড এবং প্রপার্টি থাকা।
  • Swift-এ এই OOP কনসেপ্টগুলো দক্ষতার সাথে ব্যবহার করলে অ্যাপগুলোকে বেশি ম্যানেজেবল এবং রিইউজেবল করা যায়।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...